<?php

class MailController extends AweController {

    /**
     * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
     * using two-column layout. See 'protected/views/layouts/column2.php'.
     */
    public $layout = '//layouts/column2';
    public $defaultAction = 'Admin';
    public $admin = true;

//    global $attachments;
//   public  $mailG = new YiiMailer();

    public function filters() {
        return array(
            array('CrugeAccessControlFilter'),
        );
    }

    /**
     * Manages all models.
     */
    public function actionHistorial() {
        $model = new Mail('search');
        $model->unsetAttributes(); // clear any default values
        if (isset($_GET['search'])) {
            if (!empty($_GET['search']['value'])) {
                $n = explode(' - ', $_GET['search']['value']);
                $model->date_first = $n['0'];
                $model->date_last = $n['1'];
            }
        }
        $this->render('historial', array(
            'model' => $model,
        ));
    }

    public function actionCargarFormularioMail() {
        $result = array();
        $tarea_id = null;
        if (!empty($_POST['tarea_id'])) {
            $tarea_id = $_POST['tarea_id'];
        }
        // Recoje en $ids todos los id de los clientes selecionados a los cuales se les va 
        // a enviar el sms.
        $contactos_ids = $_POST['clientes'];

        // Verificar que los clientes tengan correo
        $contactos = array();
        $alerta = false;

        /* PARA ENVIAR A SELECCIONADOS */
        if (is_array($contactos_ids)) {
            foreach ($contactos_ids as $id) {
                $contacto = Contacto::model()->findByPk($id);
                if (!$contacto->email) {
                    $alerta = true;
                }
            }
        }
        /* ENVIAR A TODOS */ else if ($contactos_ids == 'todos') {
            $totalContactos = Contacto::model()->getCountContactos('EMAIL');
            if ($totalContactos[0]['total'] != 0) {
                $contactos = "all";
                $alerta = true;
                $result['successMessage'] = 'Se enviará a ' . $totalContactos[0]['total'] . ' contacto(s)';
            }
        }
        /* ENVIAR A UNO */ else {
            $contacto = Contacto::model()->findByPk($contactos_ids);

            if ($contacto->email) {
                $contactos[] = $contacto->id;
            } else {
                $alerta = true;
            }
        }

        if (!empty($contactos) || $contactos == 'all') {
            $model = new MailForm();
            $model->contactos = $contactos;

            $result['success'] = true;
            $result['html'] = $this->renderPartial('_mail_sender', array('model' => $model, 'alerta' => $alerta, 'tarea_id' => $tarea_id), true, true);
        } else {
            $result['success'] = false;
            if (count($contactos_ids) > 1 || $contactos_ids == 'todos')
                $result['error'] = 'Ninguno de los contactos seleccionados tiene correo electronico.';
            else
                $result['error'] = 'El contacto seleccionado no tiene correo electronico.';
        }

        echo json_encode($result);
    }

    /**
     * Manages all models.
     */
    public function actionEnviar($id = null) {
        if (isset($_POST['MailForm']) || !$id == null) {
            // Mails que se van a enviar
            $no_enviados = array();
            if ($id == null) { //para saber que no es un reenvio
                foreach ($_POST['MailForm']['contactos'] as $contacto_id) {
                    // Cargar contacto
                    $contacto = Contacto::model()->findByPk($contacto_id);
                    // Crear en bdd el mail
                    $model = new Mail();
                    $model->attributes = $_POST['MailForm'];
                    $model->contenido = str_replace(array_keys($contacto::model()->replaceParams($contacto)), array_values($contacto::model()->replaceParams($contacto)), $model->contenido);
                    $model->contacto_id = $contacto->id;
                    $model->asunto_id = isset($_POST['MailForm']['asunto_id']) ? $_POST['MailForm']['asunto_id'] : null;
                    $model->contacto_id = isset($_POST['MailForm']['contacto_id']) ? $_POST['MailForm']['contacto_id'] : null;
                    $model->email = $contacto->email;
                    $model->estado = Mail::ESTADO_PENDIENTE;
                    $model->fecha_creacion = date('Y-m-d H:i:s');
                    $model->usuario_creacion_id = Yii::app()->user->id;
                    // Guardar el mail
                    if ($model->save()) {
                        // Enviar el mail
                        $sendStatus = Constants::SEND_MAILS ? $this->sendEmail($model) : true;
                        if ($sendStatus) {
                            $model->fecha_envio = Util::FechaActual();
                            $model->estado = Mail::ESTADO_NO_ENVIADO;
                            $model->save();
                            // Si el mail pertenece a una tarea guardar el id
                            if (!empty($_POST['tarea_id']))
                                Tarea::model()->updateByPk($_POST['tarea_id'], array('accion_id' => $model->id));
                        } else {
                            $no_enviados[] = $model->email;
                        }
                    } else {
                        $no_enviados[] = $model->email;
                    }
                }
                if (!empty($no_enviados)) {
                    Yii::app()->user->setFlash('error', 'Error al enviar el correo electronico a: ' . implode(', ', $no_enviados));
                } else {
                    Yii::app()->user->setFlash('success', 'Correo electrónico enviado exitosamente');
                }
            } else {
                $model = Mail::model()->findByPk($id);
                if ($model->save()) {
                    // Enviar el mail
                    $sendStatus = Constants::SEND_MAILS ? $this->sendEmail($model) : true;
                    if ($sendStatus) {
                        $model->fecha_envio = Util::FechaActual();
                        $model->estado = Mail::ESTADO_ENVIADO;
                        $model->save();
                    } else {
                        $no_enviados[] = $model->email;
                    }
                } else {
                    $no_enviados[] = $model->email;
                }
                if (!empty($no_enviados)) {
                    Yii::app()->user->setFlash('error', 'Error al enviar el correo electronico a: ' . implode(', ', $no_enviados));
                } else {
                    Yii::app()->user->setFlash('success', 'Correo electrónico enviado exitosamente');
                }
                $this->redirect(array('historial'));
            }
        }
        $this->redirect(array('/crm/contacto/admin'));
    }

    /**
     * sendEmail : Es el metodo que usa la ext.YiiMailer  para el envio del mail.
     * @param $email es el modelo de mail dond tenemos el contenido la direccion
     * @param $att es la variable que recive cuando adjuntamos un archivo
     * @param $imgatt es la variable que recive cuando adjuntamos una imagen
     * @author Diego Echeverria <decheverria@tradesystem.com.ec>
     */
    private function sendEmail($email, $att = null, $imgatt = null) {
        try {
            $mail = new YiiMailer();
            /* Configuracion para el Envio de Mails */
            $mail->Timeout = 3000;
            $mail->IsSMTP();
            $mail->SMTPAuth = true;
            $mail->CharSet = 'UTF-8';
            $mail->Host = 'smtp.gmail.com:465';
            $mail->SMTPSecure = "ssl";
            $mail->IsHTML(true);
            $mail->Username = 'info@tradesystem.com.ec';
            $mail->Password = 'info2k2013';

            $mail->clearLayout(); //if layout is already set in config
            $mail->setFrom('info@tradesystem.com.ec', 'Info');
            $mail->setTo($email->email);
            $mail->setSubject($email->asunto);
            $mail->setBody($email->contenido, 'text/html');
//            var_dump($imgatt);
//            var_dump($att);
//            $mail->setAttachment($imgatt); //Añadimos como adjunto la Imagen q nos envio por la variable $imgatt
            $mail->setAttachment('http://localhost/TruuloCRM/uploads/mail_upload/e143b27b51886fddcb119339deeeaa31.jpg'); //Añadimos como adjunto la Imagen q nos envio por la variable $imgatt
            $mail->setAttachment($att); //Añadimos al mail como adjunto el Archivo q nos envia por la variable $att
            /* Envia el Mail */
            $mail->send();

            //Actualizar el estado del mail
            $email->fecha_envio = date('Y-m-d H:i:s');
            $email->estado = Mail::ESTADO_ENVIADO;
            $email->save();

            // Crear registro de actividad
            Actividad::registrarActividad($email, Actividad::TIPO_CREATE);
            $_SESSION['attm'] = null;
            $_SESSION['imgattm'] = null;

            return true;
        } catch (Exception $ex) {
            echo $ex;
            $email->estado = Mail::ESTADO_NO_ENVIADO;
            $email->save();
            $_SESSION['attm'] = null;
            $_SESSION['imgattm'] = null;
            return false;
        }
    }

    private function sendBulkEmail($idMail, $att = null, $imgatt = null) {
        $mail = new YiiMailer();
        /* Configuracion para el Envio de Mails */
        $mail->Timeout = 3000;
        $mail->IsSMTP();
        $mail->SMTPAuth = true;
        $mail->CharSet = 'UTF-8';
        $mail->Host = 'smtp.gmail.com:465';
        $mail->SMTPSecure = "ssl";
        $mail->IsHTML(true);
        $mail->Username = 'info@tradesystem.com.ec';
        $mail->Password = 'info2k2013';

        $mail->clearLayout(); //if layout is already set in config
        $mail->setFrom('info@tradesystem.com.ec', 'Info');
        $no_enviados = array();
        $si_enviados = array();
        foreach ($idMail as $id) {
            $email = Mail::model()->findByPk($id);
            try {
                $mail->setTo($email->email);
                $mail->setSubject($email->asunto);
                $mail->setBody($email->contenido, 'text/html');
//            var_dump($imgatt);
//            var_dump($att);
//            $mail->setAttachment($imgatt); //Añadimos como adjunto la Imagen q nos envio por la variable $imgatt
                $mail->setAttachment('http://localhost/TruuloCRM/uploads/mail_upload/e143b27b51886fddcb119339deeeaa31.jpg'); //Añadimos como adjunto la Imagen q nos envio por la variable $imgatt
                $mail->setAttachment($att); //Añadimos al mail como adjunto el Archivo q nos envia por la variable $att
                /* Envia el Mail */
                $mail->send();
                //Actualizar el estado del mail
                $email->fecha_envio = Util::FechaActual();
                $email->estado = Mail::ESTADO_ENVIADO;
                $email->save();
                array_push($si_enviados, $email->email);
                // Crear registro de actividad
                Actividad::registrarActividad($email, Actividad::TIPO_CREATE);
                $_SESSION['attm'] = null;
                $_SESSION['imgattm'] = null;
            } catch (Exception $ex) {
                $email->estado = Mail::ESTADO_NO_ENVIADO;
                $email->save();
                $_SESSION['attm'] = null;
                $_SESSION['imgattm'] = null;
                array_push($no_enviados, $email->email);
            }
        }
        return array('si_enviados' => $si_enviados, 'no_enviados' => $no_enviados);
    }

    /**
     * @author SofÃ­a MejÃ­a
     * @param strign $fecha recupera el intervalo de las fechas seleccionadas
     */
    public function actionExportar($email_id = null, $fecha) {
        $fechaIni = substr($fecha, 0, 10);
        $fechaFin = substr($fecha, 13, 20);
        $data = array();
//        Valida si el exportar a excel es de todas los sms
        if ($_POST['Mail'] == 'todos') {
            ($fechaIni != null || $fechaIni != '') ? $emails = Mail::model()->rango($fechaIni, $fechaFin)->findAll() :
                            $emails = Mail::model()->fecha_mas_reciente()->findAll();
            foreach ($emails as $value) {
                array_push($data, $value['oldValues']['id']);
            }
        } else {
//            Coloca en $data solo los id de las sms seleccionadas
            $data = explode(',', $email_id);
        }
        $objExcel = new PHPExcel();
        $objExcel->setActiveSheetIndex(0) // Titulo del reporte
                ->setCellValue('A1', 'Destinatario')  //Titulo de las columnas
                ->setCellValue('B1', 'Email')
                ->setCellValue('C1', 'Enviado por')
                ->setCellValue('D1', 'Fecha envio')
                ->setCellValue('E1', 'Motivo')
        ;
        $id = 2;
        $mail = null;
        foreach ($data as $dato) {
            $mail = Mail::model()->findAllByPk($dato);
            foreach ($mail as $value) {
                $user = Yii::app()->user->um->loadUserById($value->usuario_creacion_id)->username;
                $objExcel->setActiveSheetIndex(0)
                        ->setCellValue('A' . $id, $value->contacto->nombre_completo)
                        ->setCellValue('B' . $id, $value->email)  //Titulo de las columnas
                        ->setCellValue('C' . $id, $user)
                        ->setCellValue('D' . $id, $value->fecha_envio)
                        ->setCellValue('E' . $id, $value->asunto)
                ;
                $id++;
            }
        }
        for ($i = 'A'; $i <= 'F'; $i++) {
            $objExcel->setActiveSheetIndex(0)->getColumnDimension($i)->setAutoSize(TRUE);
        }
        $objExcel->getActiveSheet()->setTitle('Sms');
//       Se activa la hoja para que sea la que se muestre cuando el archivo se abre
        $objExcel->setActiveSheetIndex(0);
////// Inmovilizar paneles
        $objExcel->getActiveSheet(0)->freezePane('A4');
        $objExcel->getActiveSheet(0)->freezePaneByColumnAndRow(1, 2);
//        // Se manda el archivo al navegador web, con el nombre que se indica, en formato 2007
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename="Email.xlsx"');
        header('Cache-Control: max-age=0');

        $objWriter = PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
        $objWriter->save('php://output');
        exit;
    }

    /**
     * Returns the data model based on the primary key given in the GET variable.
     * If the data model is not found, an HTTP exception will be raised.
     * @param integer the ID of the model to be loaded
     */
    public function loadModel($id, $modelClass = __CLASS__) {
        $model = Mail::model()->findByPk($id);
        if ($model === null)
            throw new CHttpException(404, 'The requested page does not exist.');
        return $model;
    }

    /**
     * Performs the AJAX validation.
     * @param CModel the model to be validated
     */
    protected function performAjaxValidation($model, $form = null) {
        if (isset($_POST['ajax']) && $_POST['ajax'] === 'mail-form') {
            echo CActiveForm::validate($model);
            Yii::app()->end();
        }
    }

    /*     * ******************************AJAX************************************* */

    /**
     * AjaxEnviarModal : Es la Accion para el envio de Mail la misma que nos permite añadir 
     * la imagen o el archivo y tambien el envio del mail adjunto segun el parametro que nos envie
     * @param $imgUpload enviamos  true cuando en el mail se añadio una imagen
     * @param $fileUpload enviamos  true cuando en el mail se añadio una archivo
     * @author Diego Echeverria <decheverria@tradesystem.com.ec>
     */
    public function actionAjaxEnviarModal($imgUpload = null, $fileUpload = null) {

        $model = new Mail();
        $campania_id = null;
        //validación por ajax
        if (isset($_POST['ajax']) && $_POST['ajax'] === '#mail-form') {
            $model->attributes = $_POST['MailForm'];
            $model->contactos = isset($_POST['MailForm']['contactos']) ? $_POST['MailForm']['contactos'] : null;
            $model->email = 'temp@gmail.es';
            $model->usuario_creacion_id = Yii::app()->user->id;
            $result['success'] = $model->validate();
            $result['errors'] = $model->errors;
            echo json_encode($result);
            Yii::app()->end();
        }
        $result = array();
        if ($fileUpload) {
            /*
             * Usamos una Variable de secion para obtener el archivo y no se pierda la referencia 
             * el volver a llamar al mismo metodo.
             */
//            var_dump('archivo');
            $_SESSION['attm'] = $this->actionUploadFile();
        } else {
            /* Inicializa las Variables de Sesion* */
            $_SESSION['attm'] = '';
        }
        if ($imgUpload) {
            /*
             * Usamos una Variable de secion para obtener la imagen y no se pierda la referencia 
             * el volver a llamar al mismo metodo.
             */
//            var_dump('imagen');
            $_SESSION['imgattm'] = $this->actionUploadImage();
        } else {
            /* Inicializa las Variables de Sesion* */
            $_SESSION['imgattm'] = '';
        }
//                die();
        if (Yii::app()->request->isAjaxRequest) {
            if (isset($_POST['MailForm'])) {
                // Mails que se van a enviar
                $no_enviados = array();
                $si_enviados = array();
                if ($_POST['MailForm']['contactos'] == 'all') {
//                    die(var_dump($_POST));
                    if (isset($_POST['MailForm']['campania_id'])) {
                        $campania_id = $_POST['MailForm']['campania_id'];
                    }
                    $limitIni = 0;
                    $limitFin = Constants::BATCH_ACTION_EMAIL;
                    $contactos = Contacto::model()->getContactosLotes($limitIni, $limitFin, "EMAIL", $campania_id);
                    $model = new Mail();
                    $model->attributes = $_POST['MailForm'];
                    $contenido = $model->contenido;
                    while (!empty($contactos)) {
                        $meMensajes = array();
                        $emailId = array();
                        //arreglo de eleemntos a registrar
                        $inserValues = array();
                        foreach ($contactos as $contacto) {
                            $model->contacto_id = $contacto['[id]'];
                            $model->email = $contacto['[email_principal]'];
                            $model->usuario_creacion_id = Yii::app()->user->id;
                            $model->asunto_id = isset($_POST['MailForm']['asunto_id']) ? $_POST['MailForm']['asunto_id'] : null;
                            $model->plantilla_id = isset($_POST['MailForm']['plantilla_id']) ? $_POST['MailForm']['plantilla_id'] : null;
                            $model->contenido = str_replace(array_keys($contacto), array_values($contacto), $contenido);
                            $model->fecha_creacion = Util::FechaActual();
//                            //agregar email
                            array_push($emailId, $model->email);
                            //agregar registro
                            array_push($inserValues, $model->attributes);
                        }
                        //guardar los registros
                        $idEmailToSend = Util::saveBulk($inserValues, $model->tableName()); // id de mail que se guardaron
//                        die(var_dump($idEmailToSend));
                        if ($campania_id != null) {
//                            die(var_dump('entro'));
                            foreach ($idEmailToSend as $idEmail) {
//                            var_dump($idEmail);
                                // se ejecuta para cuando viene selecionados contactos en campania
                                $registro_campaña = new CampaniaEntidad();
                                $registro_campaña->entidad_tipo = Campanias_Constants::EMAIL;
//                                $registro_campaña->entidad_id = $model->id;
                                $registro_campaña->entidad_id = $idEmail;
                                $registro_campaña->campania_id = $campania_id;
                                $campania = Campania::model()->findByPk($registro_campaña->campania_id);
                                if ($campania->nosey_form_id) {
                                    //cargo de link para responder a encuesta si la campania tiene una escuesta
                                    $content = array(
                                        array(
                                            'name' => 'info',
                                            'content' => '<h2><a style="color:#1967a5" href="' . Yii::app()->createAbsoluteUrl("nosey/encuesta/createEntidadAnswer", array('entidad_tipo' => $campania->tableName(), 'entidad_id' => $campania->id, 'contacto' => $model->contacto_id, 'form_id' => $campania->nosey_form_id, 'subentidad_tipo' => $model->tableName(), 'subentidad_id' => $model->id)) . '">test!</a></h2>'
                                        )
                                    );
                                }
                                $registro_campaña->save();
                            }
                        }
//                        die();
                        if (!empty($idEmailToSend)) {
                            try {
                                if (Constants::SEND_MAILS) {
                                    $resultStatus = $this->sendBulkEmail($idEmailToSend, $_SESSION['attm'], $_SESSION['imgattm']);
                                    $si_enviados = $resultStatus['si_enviados'];
                                    $no_enviados = $resultStatus['no_enviados'];
                                } else {
                                    Mail::model()->updateByPk($idEmailToSend, array("estado" => Mail::ESTADO_ENVIADO, "fecha_envio" => Util::FechaActual()));
                                    $si_enviados = $emailId;
                                }
                            } catch (Exception $exc) {
                                
                            }
                        }
                        $limitIni = $limitIni + $limitFin;
                        $contactos = Contacto::model()->getContactosLotes($limitIni, $limitFin, "EMAIL", $campania_id);
                    }
                    if (!empty($si_enviados)) {
                        Actividad::registrarActividad($model, Actividad::TIPO_CREATE);
                    }
                } else if (is_array($_POST['MailForm']['contactos'])) {
                    foreach ($_POST['MailForm']['contactos'] as $contacto_id) {
                        // Cargar contacto
                        $contacto = Contacto::model()->findByPk($contacto_id);
                        // Crear en bdd el mail
                        $model = new Mail();
                        $model->attributes = $_POST['MailForm'];
                        $model->contacto_id = $contacto->id;
                        $model->contenido = str_replace(array_keys($contacto::model()->replaceParams($contacto)), array_values($contacto::model()->replaceParams($contacto)), $model->contenido);
                        $model->email = $contacto->email;
                        $model->asunto_id = isset($_POST['MailForm']['asunto_id']) ? $_POST['MailForm']['asunto_id'] : null;
                        $model->plantilla_id = isset($_POST['MailForm']['plantilla_id']) ? $_POST['MailForm']['plantilla_id'] : null;
                        $model->medio_envio = isset($_POST['MailForm']['medio_envio']) && $_POST['MailForm']['medio_envio'] != '' ? $_POST['MailForm']['medio_envio'] : Constants::MAIL_YIIMAILER;
                        $model->estado = Mail::ESTADO_PENDIENTE;
                        $model->fecha_creacion = date('Y-m-d H:i:s');
                        $model->usuario_creacion_id = Yii::app()->user->id;
                        // Guardar el mail
                        if ($model->save()) {
                            // Enviar el mail 
                            if (!empty($_POST['MailForm']['campania_id'])) {  //esta accion es para el actualizado solo del boton 
                                $registro_campaña = new CampaniaEntidad();
                                $registro_campaña->entidad_tipo = Campanias_Constants::EMAIL;
                                $registro_campaña->entidad_id = $model->id;
                                $registro_campaña->campania_id = $_POST['MailForm']['campania_id'];
                                $campania = Campania::model()->findByPk($registro_campaña->campania_id);
                                if ($campania->nosey_form_id) {
                                    //cargo de link para responder a encuesta si la campania tiene una escuesta
                                    $content = array(
                                        array(
                                            'name' => 'info',
                                            'content' => '<h2><a style="color:#1967a5" href="' . Yii::app()->createAbsoluteUrl("nosey/encuesta/createEntidadAnswer", array('entidad_tipo' => $campania->tableName(), 'entidad_id' => $campania->id, 'contacto' => $model->contacto_id, 'form_id' => $campania->nosey_form_id, 'subentidad_tipo' => $model->tableName(), 'subentidad_id' => $model->id)) . '">test!</a></h2>'
                                        )
                                    );
                                }
                                if ($registro_campaña->save()) {
                                    $result['count'] = $registro_campaña->countAccion($registro_campaña->campania_id, $model->contacto_id, $registro_campaña->entidad_tipo);
                                    if (isset($_POST['cco_id'])) {
                                        $result['cco_id'] = $_POST['cco_id'];
                                    }
                                }
                            } else if (isset($_POST['campania_id']) && $_POST['campania_id'] != '') {
                                // se ejecuta para cuando viene selecionados contactos en campania
                                $registro_campaña = new CampaniaEntidad();
                                $registro_campaña->entidad_tipo = Campanias_Constants::EMAIL;
                                $registro_campaña->entidad_id = $model->id;
                                $registro_campaña->campania_id = $_POST['campania_id'];
                                $campania = Campania::model()->findByPk($registro_campaña->campania_id);
                                if ($campania->nosey_form_id) {
                                    //cargo de link para responder a encuesta si la campania tiene una escuesta
                                    $content = array(
                                        array(
                                            'name' => 'info',
                                            'content' => '<h2><a style="color:#1967a5" href="' . Yii::app()->createAbsoluteUrl("nosey/encuesta/createEntidadAnswer", array('entidad_tipo' => $campania->tableName(), 'entidad_id' => $campania->id, 'contacto' => $model->contacto_id, 'form_id' => $campania->nosey_form_id, 'subentidad_tipo' => $model->tableName(), 'subentidad_id' => $model->id)) . '">test!</a></h2>'
                                        )
                                    );
                                }
                                $registro_campaña->save();
                            }
                            /* Enviamos el mail con el metodo sendEmail los parametros que tenemos el modelo
                             * del mail , si tenemos en la variable de session una imagen o un archivo */
                            $sendStatus = Constants::SEND_MAILS ? $this->sendEmail($model, $_SESSION['attm'], $_SESSION['imgattm']) : true;
                            if ($sendStatus) {
                                $model->fecha_envio = Util::FechaActual();
                                $model->estado = Mail::ESTADO_ENVIADO;
                                $model->save();
                                // Si el mail pertenece a una tarea guardar el id
                                if (!empty($_POST['tarea_id']))
                                    Tarea::model()->updateByPk($_POST['tarea_id'], array('accion_id' => $model->id));

                                $si_enviados[] = $model->email;
                            }
                            else {
                                $no_enviados[] = $model->email;
                            }
                        } else {
                            $no_enviados[] = $model->email;
                        }
                    }
                }
                if (!empty($no_enviados) && !empty($si_enviados)) {
                    $result['success'] = true;
                    $result['messages'] = array('error' => 'Error al enviar el correo electronico a: ' . implode(', ', $no_enviados));
                } else if (!empty($si_enviados) && empty($no_enviados)) {
                    $result['success'] = TRUE;
                    $result['messages'] = array('success' => 'Correo electrónico enviado exitosamente.');
                } else {
                    $result['success'] = false;
                    $result['messages'] = array('error' => 'Verifique la información.');
                }
            }
            echo json_encode($result);
        }
    }

    /**
     * Es la Accion para la subida de Imagen mediante redactorJS(el editor del mail)
     * 
     * @author Diego Echeverria <decheverria@tradesystem.com.ec>
     */
    public function actionUploadImage() {
        //Yii::app()->createAbsoluteUrl("crm/confirmacion/respAfirmativa", array('id' => $email->contacto_id))
//        var_dump('accion imagen');
        $dir = 'uploads/mail_upload/';
        $imgattach = array();
        $_FILES['file']['type'] = strtolower($_FILES['file']['type']);

        if ($_FILES['file']['type'] == 'image/png' || $_FILES['file']['type'] == 'image/jpg' || $_FILES['file']['type'] == 'image/gif' || $_FILES['file']['type'] == 'image/jpeg' || $_FILES['file']['type'] == 'image/pjpeg') {
            // Edita el Nombre del Archivo
            $file = $dir . md5(date('YmdHis')) . '.jpg';

            // Copiando..
            move_uploaded_file($_FILES['file']['tmp_name'], $file);
            $imgattach = array($file);
            // Nos deja visualizar la imagen
            $array = array(
//                'filelink' => '/TruuloCRM/' . $file
                'filelink' => Yii::app()->createAbsoluteUrl($file)
            );

            echo stripslashes(json_encode($array));
            return $imgattach;
        }
//        die();
    }

    /**
     * Es la Accion para la subida de Archivos mediante redactorJS(el editor del mail)
     * 
     * @author Diego Echeverria <decheverria@tradesystem.com.ec>
     */
    public function actionUploadFile() {

        $dir = 'uploads/mail_upload/';
        /* variable para retornar el nombre del archivo adjunto */
        $atta = array();
        // Copiando..
        move_uploaded_file($_FILES['file']['tmp_name'], $dir . $_FILES['file']['name']);
        $atta = $_FILES['file']['name'];

        $array = array(
            /* filelink es el link que usa el editor para mostrarnos en el editor */
//            'filelink' => '/localhost/TruuloCRM/uploads/mail_upload/' . $_FILES['file']['name'],
            'filelink' => Yii::app()->createAbsoluteUrl('/uploads/mail_upload/' . $atta),
            'filename' => $_FILES['file']['name']
        );
//        var_dump(Yii::app()->createAbsoluteUrl('/uploads/mail_upload/' . $_FILES['file']['name']));die();
        $atta = array($dir . $_FILES['file']['name']);
        echo stripslashes(json_encode($array));
        return $atta;
    }

}
